Designing Our Game Engine